void main() {
  // Cow c = new Cow('牛爷爷', 180);
  Cow c = new Cow('牛宝宝', 260);
  print(c.name);
  print(c.weight);

  // 使用 创建实例的方法 创建对象
  Cow c1 = Cow.make('牛仔', 120);
  print(c1.name);
  print(c1.weight);
}

class Cow {
  String? name;
  num? weight;

  // 构造函数，除了赋值以外还有逻辑用这种写法
  // Cow(String name, num weight) {
  //   print('执行了构造函数');
  //   this.name = name;
  //   this.weight = weight;
  // }

  // 作用和上面是一样的，参数 1 设置给 name，参数 2 设置给 weight
  // 只是设置初始值，用这种写法即可
  Cow(this.name, this.weight);

  // 用特殊的方法来创建实例对象并赋值
  Cow.make(this.name, this.weight);

  bark() {
    print('哞哞');
  }
}
